package com.wing.cabinet.model.response;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wing.cabinet.model.entity.Cabinet;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 刀柜VO
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class CabinetVO {

    /**
     * ID
     */
    private Long id;

    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss" )
    private LocalDateTime createTime;

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 修改者
     */
    private Long modifier;

    /**
     * 创建人
     */
    private String creatorName;

    /**
     * 修改人
     */
    private String modifierName;

    /**
     * 备注
     */
    private String remark;

    /**
     * 编号
     */
    private String code;

    /**
     * 柜子名称
     */
    private String name;

    /**
     * 入驻企业ID
     */
    private Long settledCompanyId;

    /**
     * 入驻企业名称
     */
    private String settledCompanyName;

    /**
     * 刀柜分类ID
     */
    private Long cabinetCategoryId;

    /**
     * 类别名称
     */
    private String categoryName;

    /**
     * 刀柜类型ID
     */
    private Long cabinetTypeId;

    /**
     * 类型名称
     */
    private String typeName;

    public String getTypeName(){
        return this.cabinetTypeDesc;
    }

    /**
     * 刀柜型号ID
     */
    private Long cabinetModelId;

    /**
     * 刀柜品牌ID
     */
    private Long cabinetBrandId;

    /**
     * 品牌名称
     */
    private String brandName;

    /**
     * 主板类型ID
     */
    private Long motherboardTypeId;

    /**
     * 主板上名字
     */
    private String motherboardName;

    /**
     * 升降主板类型ID
     */
    private Long hostTypeId;

    /**
     * 主机类型名称
     */
    private String hostTypeName;

    /**
     * 数量
     */
    private Integer quantity;

    /**
     * 车间位置
     */
    private String workshopLocation;

    /**
     * 库位
     */
    private String seat;

    /**
     * 提交人
     */
    private String submitter;

    /**
     * 楼层
     */
    private String floor;

    /**
     * 刀柜SKU码
     */
    private String cabinetSku;

    /**
     * 状态：receipts(0,已签收);already(1,已分配);wait(2,待分配);notPerfection(3,未完善)
     */
    private Cabinet.Status status;

    /**
     * 状态描述
     */
    @TableField(exist = false)
    private String statusDesc;

    public String getStatusDesc() {
        if (status!=null){
            return status.getDesc();
        }
        return null;
    }


    /**
     * 货道数
     */
    private Integer laneNum;

    /**
     * 库位数
     */
    private String spaceNum;

    /**
     * 产品数
     */
    private Integer skuNum;

    /**
     * 告警产品数
     */
    private Integer alarmSkuNum;


    /**
     * 车间
     */
    private String workshopName;

    /**
     * 所属企业名称
     */
    private String companyName;

    /**
     * 客户所在地
     */
    private String companyAddress;

    /**
     * 辅柜数(暂无对应数据)
     */
    private Integer auxiliaryCabinet;

    /**
     * 刀柜性质
     */
    private Cabinet.CabinetNature cabinetNature;

    /**
     * 刀柜性质描述
     */
    @TableField(exist = false)
    private String cabinetNatureDesc;

    public String getCabinetNatureDesc() {
        return cabinetNature == null ? null : cabinetNature.getDesc();
    }

    /**
     * 所属主柜编码
     */
    private String belongCabinet;

    /**
     * 刀柜自定义编码
     */
    private String customizeCabCode;

    /**
     * 刀柜状态
     */
    private Cabinet.CabStatus cabStatus;

    /**
     * 刀柜状态描述
     */
    @TableField(exist = false)
    private String cabStatusDesc;

    public String getCabStatusDesc() {
        return cabStatus == null ? null : cabStatus.getDesc();
    }

    /**
     * 刀柜性质状态
     */
    private Cabinet.CabNatureType cabNatureType;

    /**
     * 刀柜性质状态描述
     */
    @TableField(exist = false)
    private String cabNatureTypeDesc;

    public String getCabNatureTypeDesc() {
        return cabNatureType == null ? null : cabNatureType.getDesc();
    }

    /**
     * 序号
     */
    public Integer serialNumber;

    /**
     * 货道数量
     */
    private Integer cargoLaneNumber;

    /**
     * 货位数量
     */
    private Integer cargoSpaceNumber;

    /**
     * 刀柜编码
     */
    private String cabCode;

    private String cabName;


    /**
     * 刀柜类型
     */
    private Cabinet.CabinetType cabinetType;


    private String cabinetTypeDesc;


    public String getCabinetTypeDesc(){
        if(this.cabNatureType!=null){
            return this.cabinetType.getDesc();
        }
        return "";

    }


    private Integer cabNum;

    private String cabCodes;

    /**
     * 企业编码
     */
    private String enterpriseCode;

    /**
     * 父级ID
     */
    private Long parentId;

    /**
     * 激活码
     */
    private String activationCode;

    private List<CabinetVO> subCabs;

    private Integer quantityAlarm;

    private  Integer quantitySluggish;
    /**
     * 车间id,sys_room_info表,房间类型为车间的房即为车间
     */
    private Long workshopId;

    /**
     * 设备编号
     */
    private String deviceNo;
}
